home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / OBJPPSTR.C < prev    next >
Text File  |  1992-03-11  |  954b  |  44 lines

  1. /**************************************************************************
  2.  * OBJPPSTR.C - Return a pointer to an object's string pointer.
  3.  *************************************************************************/
  4.  
  5. #include "gemfast.h"
  6.  
  7. char **obj_ppstring(pobj)
  8.     register OBJECT *pobj;
  9. {
  10.     register int  ob_type;
  11.     register long *pspec;
  12.  
  13.     ob_type = pobj->ob_type & 0x00FF;
  14.     pspec    = &pobj->ob_spec;
  15.  
  16.     if (pobj->ob_flags & INDIRECT) {
  17.         pspec = (long *)(*pspec);
  18.     }
  19.  
  20.     if (ob_type == G_USERDEF) {
  21.         register XUSERBLK *pxub = (XUSERBLK *)(*pspec);
  22.         if (pxub->ub_self == pxub) {
  23.             ob_type = pxub->ob_type;
  24.             pspec    = &pxub->ob_spec;
  25.         }
  26.     }
  27.  
  28.     switch (ob_type) {
  29.       case G_ICON:
  30.         pspec = (long *)(*pspec);
  31.         pspec = &pspec[2];        /* add 12-byte offset to pointer */
  32.         break;
  33.       case G_TEXT:
  34.       case G_BOXTEXT:
  35.       case G_FTEXT:
  36.       case G_FBOXTEXT:
  37.         pspec = (long *)(*pspec);
  38.         break;
  39.     }
  40.  
  41.     return (char **)pspec;
  42. }
  43.  
  44. ə